/**
 * @param {fn}
 * @returns {fn}
 */
// 节流
export function throttle(fn, aply) {
    let open = true; // 开关 默认是开
    console.log(aply);

    return (...ags) => {
        if (!open) return // 如果节流函数已经执行了 直接return
        open = false // 设为关
        setTimeout(() => {
            fn.apply(this, ags);
            open = true // 节流周期执行完设为开
        }, aply)
    }
}
// 防抖
export function debounce(fn, laby) {
    var timer = null; // 定时器的返回值 初始为null
    return (...ags) => {
        clearTimeout(timer) // 如果防抖函数一直触发那么fn一直不执行
        timer = setTimeout(() => {
            fn.apply(this, ags);
        }, laby)
    }
}
// /**
//  * 节流|防抖函数: 期间执行最后一次触发的函数
//  * @param {Function} fn - 需要节流|防抖的函数
//  * @param {number} [interval=0] - 间隔 ms, 默认 0
//  * @param {boolean} [resetInterval=false] - 是否立即重置间隔, 设置 true 时为防抖函数
//  * @returns {Function} - 已节流函数
//  */
// export function throttle(fn, interval = 5000, resetInterval = false) {
//     let [_self, timer, isFirst] = [fn, undefined, true];
//     return function() {
//         if (isFirst && !resetInterval) {
//             _self.apply(this, arguments);
//             return isFirst = false;
//         }
//         if (timer) {
//             if (resetInterval) {
//                 clearTimeout(timer);
//                 timer = undefined;
//             } else {
//                 return false;
//             }
//         }
//         timer = setTimeout(() => {
//             clearTimeout(timer);
//             timer = undefined;
//             _self.apply(this, arguments);
//         }, interval);
//     };
// }